home *** CD-ROM | disk | FTP | other *** search
- PDQINFO.TXT Copyright (c) 1992 Crescent Software, Inc.
-
- This file contains the text from a pamphlet on P.D.Q. 3.0. A
- new version of P.D.Q. with additional features will be released
- shortly. P.D.Q. is currently $149. For technical information,
- call (203) 438-5300. To order, call 1-800-35-BASIC.
-
- Crescent Software
- 11 Bailey Avenue
- Ridgefield, CT 06877
-
-
-
- Introducing P.D.Q.: What C Was Supposed To Be
-
- A Revolutionary Concept in High-Level Languages
- (and Assembler too!)
-
-
-
- No one would dispute the value of a program that's small and
- fast. Indeed, compiler vendors such as Microsoft and Borland
- are constantly refining their products, to improve the
- performance and size of your programs. Unfortunately, no
- high-level language comes even close to creating programs as
- efficient as those written in assembly language. That is,
- until now.
-
-
-
- Introducing P.D.Q. Version 3.0
-
-
-
- This remarkable library lets you write programs that are
- extremely fast and compact, using a high-level language you
- already know. Unlike C, Pascal, or QuickBASIC, P.D.Q. can
- produce a "Hello world" program with a stand-alone .EXE file
- size of only 750 bytes. Real programs that perform useful
- tasks may be written in less than 2,000 bytes. For example,
- P.D.Q. includes as an example a perpetual on-screen TSR clock
- program with an .EXE file size of less than 1500 bytes.
-
- Also included are numerous examples such as a 1480-byte
- redirectable DOS "filter" program, and a utility similar to
- Peter Norton's 9K FILESIZE.COM, but less than 5K in size.
- Programs produced by P.D.Q. are often half the size of an
- equivalent written in C. P.D.Q. truly is the closest you'll
- come to a pure assembler program, but without having to code in
- assembly language. And if you do use assembly language, P.D.Q.
- will help you with floating point math, TSR programs, dynamic
- strings, file and device input and output, sound, and multi-
- dimensional arrays.
-
- The primary purpose of P.D.Q. is to write small to medium-sized
- applications, where program size and execution speed are
- critical. Because P.D.Q. programs are inherently well-behaved,
- they may also be run under operating systems such as
- Quarterdeck's DESQview and Microsoft Windows without requiring
- additional programming effort. A wealth of string, DOS, and
- BIOS services are provided, along with full support for modern
- programming constructs and user-defined variables.
-
- Best of all, TSR programming support and interrupt handling are
- built into the P.D.Q. library. You can create complete memory-
- resident applications in just minutes, instead of days or even
- weeks. TSR capabilities are added using four simple subroutine
- calls, and the P.D.Q. routines then handle all the details of
- memory allocation, the DOS "busy" flag, deinstallation, and so
- forth. A P.D.Q. TSR program can even intercept multiple
- interrupts, with separate program entry points for each.
-
- The TSR capabilities are especially impressive, and very easy
- to use. You simply specify which hot key to use, and where in
- the program control is to go when that key is pressed. Real
- interrupt handlers are just as easy to create-- you indicate
- the interrupt to take over and where in the program the handler
- is located. Once the interrupt handler is in place you can
- process it entirely yourself and return to the underlying
- program, call the original handler as a subroutine, or jump to
- the original handler. Your program has full access to the CPU
- registers at all times.
-
- Without doubt, P.D.Q. is the most revolutionary and exciting
- concept in high-level languages to come along in years. But
- what is it?
-
-
-
- As Easy As BASIC
-
-
-
- P.D.Q. is a replacement linking library for use with
- Microsoft's QuickBASIC and BASIC PDS compiler. By completely
- rewriting the BASIC language library, we were able to improve
- the efficiency of the resultant code enormously. All of the
- "handholding" that BASIC normally adds to every program has
- been removed, leaving only the essential elements. Thus, you
- can be productive immediately, without having to struggle with
- yet another new language.
-
- We also overhauled BASIC's convoluted method of handling DOS
- errors. Where conventional BASIC requires you to first define
- an error handler and then set up an ON ERROR trap to jump
- there, P.D.Q. lets you simply test the success or failure of
- the most recent DOS operation. The short program fragment
- below shows this in context.
-
- OPEN "accounts.dat" FOR INPUT AS #1
- IF ERR = 53 THEN PRINT "Sorry, file not found."
-
-
-
- Why BASIC?
-
-
-
- Some programmers, particularly those who don't ordinarily
- program in BASIC, may wonder why we selected Microsoft BASIC as
- the core language for P.D.Q. Simply put, BASIC is the easiest
- of all high-level languages to use, and nearly every programmer
- is already familiar with it. Microsoft compiled BASIC provides
- all of the features needed for modern, structured programming.
-
- By using BASIC, P.D.Q. is able to offer an impressive list of
- string handling features, along with sound, direct memory and
- port access, automatic variable type conversion, and structured
- data. Of course, BASIC also supports dynamic memory
- allocation, variable length strings, access to DOS and BIOS
- services, and protection against inadvertently overwriting
- memory. Further, P.D.Q. is fully compatible with subroutines
- and functions written in assembly language such as those in our
- QuickPak Professional.
-
- Finally, the BC.EXE compiler supplied with Microsoft BASIC is
- as powerful and capable as any language compiler. Programs may
- be written and debugged in the convenient environment BASIC
- offers, and then linked for maximum performance when creating
- the final program.
-
-
-
- The Spirit of Performance
-
-
-
- Our goal in designing P.D.Q. was to place code size and
- execution speed above all other considerations. Many
- programmers incorrectly believe that compiled languages are
- inherently large and slow, simply because they are compiled.
- But nothing could be further from the truth. In many cases,
- the Microsoft BASIC compiler generates object code as efficient
- as a human hand-coding in assembly language. The real problem
- with most compilers is the way their language libraries have
- been implemented. By taking an entirely new and different
- approach to language design, P.D.Q. is able to create programs
- that are nearly as small and fast as those written in assembly
- language.
-
- Like most compilers, Microsoft BASIC translates simple program
- statements directly to the equivalent machine-code
- instructions. For example, X% = X% + 1 is compiled to INC WORD
- PTR [X%]. However, more complex commands generate calls to the
- BASIC language library. And that's where P.D.Q. comes in. All
- of the routines in the P.D.Q. library are extremely efficient,
- and have been optimized to the fewest number of bytes and
- machine clock cycles.
-
-
-
- But Isn't That What C Is For?
-
-
-
- One of the promises of C was to provide smaller and faster
- programs, in exchange for additional programming effort. If
- you were willing to step down to a lower level language nearer
- to assembler, the compiler would reciprocate by generating a
- more efficient program. But this simply isn't true-- the
- current generation of C compilers offers little if any
- improvement over QuickBASIC 4.5. In fact, compared to P.D.Q.,
- C is just another slow and bloated high-level language! By
- contrast, P.D.Q. is nearly as easy to use as conventional
- BASIC, while providing a level of performance that is clearly
- superior to C. And everyone knows that performance is what
- programming is all about.
-
-
-
- How We Did It?
-
-
-
- In order to achieve such impressive file sizes and high
- performance, we did have to make some compromises. BASIC's
- graphics, communications, and advanced (transcendental) math
- operations are not supported; however, Crescent also sells
- graphics and communications libraries for programs that need
- those capabilities. Further, statements that access DOS and
- BIOS services provide little or no error checking. For
- example, if you attempt to position the cursor at an illegal
- row or column, P.D.Q. simply passes your parameters on to the
- BIOS which ignores them.
-
-
-
- Seeing is Believing
-
-
-
- Compare the sample programs created using P.D.Q. with
- equivalent programs written in QuickC, Turbo C, Turbo Pascal,
- and regular QuickBASIC 4.5. The benchmark timings shown below
- were obtained using a Northgate Elegance 386-25 computer, but
- slowed down to 8 MHz to obtain repeatable results. A RAM disk
- was used for the read/write timings. All .EXE file sizes are
- in bytes, and all times are given in seconds.
-
- The Num-Off utility turns the NumLock key off and the Hello
- program simply prints "hello"-- these show the effective
- minimum program size for each language system. Note that the
- P.D.Q. Hello program includes the entire dynamic string
- management portion of the runtime library! The DOS filter
- program accepts input from STDIN, capitalizes it and strips the
- high bit from each character, and sends the result through
- STDOUT.
-
- The Epson set-up program is a small, menu-driven utility that
- sends escape codes for various printer characteristics. The
- TSR version can be popped up on top of any text-mode program,
- and it saves and restores the underlying screen. Finally, the
- File Size program is a clone of Peter Norton's 9K FS.COM
- utility. It reads all files whose names match a given spec,
- adds up their sizes, and also checks if they will fit onto a
- selected target. Like Norton's, our version also takes the
- target cluster size into account when determining if the files
- will fit.
-
- For the long integer multiply test, 150 multiplications were
- performed in a loop 1,000 times. Please note that the Turbo C
- programs were compiled using the Small memory model which
- produces .COM files. Also note that we have optimized long
- integer operations for size rather than speed. Finally, a bug
- in the sort routine provided with QuickC is responsible for its
- poor showing in that category.
-
-
-
- File Size Comparisons
-
-
- P.D.Q. QC 2.0 TC 2.0 TP 5.5 QB 4.5
- +-------------------+-------+-------+-------+-------+-------+
- | Num-Off Utility | 418 | 2371 | 990 | 2845 | 10325 |
- | Print Hello | 754 | 5363 | 3958 | 3260 | 12798 |
- | DOS filter | 1482 | 5345 | 4970 | 3443 | 19523 |
- | Epson Set-up | 2228 | 7837 | 8030 | 8014 | 35877 |
- | TSR Epson Set-up | 4800 | n/a | n/a | n/a | n/a |
- | File-Size program | 4956 | 10537 | 7814 | 8809 | 19650 |
- +-------------------+-------+-------+-------+-------+-------+
-
-
-
- Timing Comparisons
-
-
- P.D.Q. QC 2.0 TC 2.0 TP 5.5 QB 4.5
- +---------------------+-------+-------+-------+-------+-------+
- | Long Int Multiply | 2.64 | 2.31 | 2.25 | 7.52 | 3.02 |
- | Long Int Mult (386) | 2.20 | 2.31 | 2.25 | 7.52 | 3.02 |
- | Sort 3000 Strings | 0.60 |144.89 | 1.54 | 0.99 | 1.92 |
- | Print 3000 Strings | 0.88 | 1.15 | 1.04 | 3.52 | 2.04 |
- | Write 500 Records | 0.33 | 0.33 | 0.66 | 0.44 | 0.38 |
- | Read 500 Records | 0.27 | 0.27 | 0.27 | 0.49 | 0.28 |
- +---------------------+-------+-------+-------+-------+-------+
-
-
-
-
- What's Included
-
-
-
- P.D.Q. is supplied as two library files-- PDQ.LIB is intended
- for use with any IBM PC/XT/AT or compatible computer, and
- PDQ386.LIB is a 386-specific version for use with computers so
- equipped. In all, more than 190 BASIC statements and keywords
- are supported.
-
- More than 90 useful language extensions are provided including
- memory allocation, DOS critical error trapping, block memory
- moves and comparisons, string array sorting, a complete set of
- TSR extensions including swapping to disk or EMS, output
- through STDERR, access to the parent's environment, and much
- more. Many programming examples and utilities are also
- included, as well as a comprehensive owner's manual.
-
- Finally, P.D.Q. comes with complete, commented library source
- code so you can see exactly how it works, or even modify and
- extend the language if you like.
-
-
-
- What's New in Version 3.0
-
-
-
- Many new and important features have been added in version 3.0.
- These include: Floating point math that automatically uses a
- coprocessor if present; full network file support; TSR programs
- that swap to disk or EMS to take as little memory as possible;
- bit manipulation; and safe DOS and BIOS access within TSR
- programs that handle interrupts manually. The manual has been
- greatly expanded, and now totals more than 500 pages. Numerous
- new example and utility programs have been added, including a
- menu-driven environment for compiling and linking, TSR programs
- that capture printer output and keystrokes to disk, color
- printing with no source code changes, and much more.
-
- Equally exciting is the new assembly language toolbox
- capability. The entire P.D.Q. library internal operation is
- now fully documented, and there are many examples showing how
- to add BASIC-like capabilities to programs written in assembly
- language. Every routine is described in detail, accompanied by
- a description, calling convention, and brief example. Many
- complete assembler programs are provided as examples showing
- how to utilize dynamic strings, IEEE floating point math, and
- all of the P.D.Q. TSR capabilities.
-
-
-
- System Requirements
-
-
-
- P.D.Q. requires QuickBASIC 4.0 or later or BASIC 7 PDS; DOS 2.1
- or later; 256K RAM; and a PC/XT/AT or compatible computer.
- 5-1/4 inch disks are standard, although 3-1/2 inch disks are
- available if specified when ordering.
-
-
-
- About Crescent Software
-
-
-
- Crescent Software publishes many other useful products for
- BASIC programmers. We offer general purpose toolboxes, as well
- as programs for graphics, screen design, communications, laser
- printing, scientific applications, and more. All products
- include complete source code, free technical support, and
- royalties are never required.
-
-
-
- The Best Reviews in the Business
-
-
-
- P.D.Q. won Byte Magazine's User's Choice Award for Language of
- the Year in 1989, and following is additional praise it has
- received.
-
- "The talk of the programming community...is P.D.Q. Hot stuff,
- for sure."-- John Dvorak, PC Magazine, November 28, 1989
-
- "Every QuickBASIC programmer ought to have P.D.Q.-- the speed
- and code size reduction will amaze you. Recommended."-- Jerry
- Pournelle, Byte Magazine, February 1990
-
- "I feel sure the approach taken by Crescent Software is the
- approach the whole industry will follow in the future."-- Bruce
- Tonkin, Dr. Dobb's Journal, December 1989
-
- "The combination of TSR ability and small code makes P.D.Q. a
- contender for a development environment of choice."-- Jeff
- Angus, Computer Language, December 1989
-
- "I think P.D.Q. will very likely become one of the best-selling
- add-ons of all time."-- Jim Pyle, PCM Magazine, February 1990
-
- "You can write TSR code without having to worry about the
- technicalities...I like P.D.Q."-- Hardin Brothers, PC Resource,
- March 1990
-